const Joi = require('@hapi/joi')

module.exports = {

  /**
   * @description: 用户注册
   */
  register: {
    schema: Joi.object({
      username: Joi.string().min(1).max(1000).required(),
      password: Joi.string().min(1).max(16).required()
    }),
    options: {
      // 允许存在不在 schema 中的字段
      allowUnknown: true,
      // 过滤不存在 schema 中的字段
      stripUnknown: true,
      // 替换提示文本
      language: {
        any: {
          required: '是必填项'
        },
        number: {
          min: '需大于或等于 {{limit}}',
          max: '需小于或等于 {{limit}}',
          positive: '必须是一个正数',
          less: '必须小于 {{limit}}',
          greater: '必须大于 {{limit}}'
        }
      }
    }
  },

  /**
   * @description: 用户登录
   */
  login: {
    schema: Joi.object({
      username: Joi.string().min(1).max(1000).required(),
      password: Joi.string().min(1).max(1000).required()
    }),
    options: {
      // 允许存在不在 schema 中的字段
      allowUnknown: true,
      // 过滤不存在 schema 中的字段
      stripUnknown: true,
      // 替换提示文本
      language: {
        any: {
          required: '是必填项'
        },
        number: {
          min: '需大于或等于 {{limit}}',
          max: '需小于或等于 {{limit}}',
          positive: '必须是一个正数',
          less: '必须小于 {{limit}}',
          greater: '必须大于 {{limit}}'
        }
      }
    }
  },
  /** 
   * @description:修改密码
   */
  update: {
    schema: Joi.object({
      password: Joi.string().min(1).max(1000).required()
    }),
    options: {
      // 允许存在不在 schema 中的字段
      allowUnknown: true,
      // 过滤不存在 schema 中的字段
      stripUnknown: true,
      // 替换提示文本
      language: {
        any: {
          required: '是必填项'
        },
        number: {
          min: '需大于或等于 {{limit}}',
          max: '需小于或等于 {{limit}}',
          positive: '必须是一个正数',
          less: '必须小于 {{limit}}',
          greater: '必须大于 {{limit}}'
        }
      }
    }
  },

  /**
   * @description: 检测header
   */
  checkHeader: {
    schema: Joi.object({
      authorization: Joi.string().required().error(new Error('authorization 不能为空'))
    }),
    options: {
      // 允许存在不在 schema 中的字段
      allowUnknown: true,
      // 过滤不存在 schema 中的字段
      stripUnknown: true,
      // 替换提示文本
      language: {
        any: {
          required: '是必填项'
        },
        number: {
          min: '需大于或等于 {{limit}}',
          max: '需小于或等于 {{limit}}',
          positive: '必须是一个正数',
          less: '必须小于 {{limit}}',
          greater: '必须大于 {{limit}}'
        }
      }
    }
  }
}
